Учимся реализовывать сценарии карт.
=============================================
Сценарий - это то что картостроитель предлагает делать игрокам на карте: спасать заложников, ставить бомбу, просто валить друг друга безо всяких хитростей... Ну Вы поняли...
Сценариев уже напридумывали целую гору. Обычно автор карты указывает сценарий в самом названии карты. Первые буквы - это и есть сценарий (обычно их две, но бывает по разному).
Классические сценарии (которые подразумевались создателями мода под названием CS1.6) такие:
as_ (Assassination/VIP) - контра должна сопроводить важную персону (VIP) к точке эвакуации, а теры должны им помешать. Роль VIP играет один из контров.
cs_ (Hostage Rescue) - контра должна как бы спасти и сопроводить тупых ботов - "заложников" к точке эвакуации, а теры опять мешают.
de_ (Bomb/Defuse) - теры должны заложить бомбу в определенном месте (таких мест, как правило, несколько) и сделать всё возможное, чтобы бомба жахнула, а мешает им контра.
es_ (Escape) - теры якобы совершают побег и должны добежать до точки эвакуации, а контра пытается их всех застрелить.
Но победить в любом сценарии можно тупо завалив всех врагов (если конечно они ещё не успели выполнить свою задачу).
Дальше под влиянием фантазии или какой-то причудливой необходимости стали появляться другие сценарии:
dm_ (Deathmatch) - игрок рождается чёрт знает где и начинает стрелять в набегающих ото всюду игроков противоположной команды, то-есть сценарий, как мы можем заметить, незамысловатый. Для серверов пишут специальные проги, что бы игроки не ждали окончания раунда, а возрождались сразу после гибели, да и деньги там не нужны - игрок просто клянчит любой ствол у такой проги и "оно" ему дается. Маппер тут не при чем, его задача - просто стены сделать (в смысле геометрию карты сделать надо) и точек рождения игроков накидать. Дальше сделают всё другие люди :) (они даже перенакидают точки рождения игроков по-своему). Такие люди из любой карты могут сделать DM.
Этот сценарий пользуется популярностью, думать то не надо при игре, моск отдыхает. Чистый, незамутнённый Квэйк и Экшн, да простят меня Квакеры :).
fy_ (Fight Yard) - почти то же самое, что и dm_ , граница почти не ощутима. Однако каноничным считается, что на fy_ картах должно раздаваться оружие: или оно валяется на полу, или суётся в карман игроку при рождении (это может делать маппер, для этого есть средства). Кроме того игра на fy_ картах предполагается раундовая. Но всем по фиг, поэтому можно считать, что это одно и то же, что и dm_ :).
aim_ (Combat/Skill) - этот сценарий возник по трем причинам: первая - тренировка умения пользоваться каким-либо видом оружия, вторая - выяснение отношений между игроками (кто круче стреляет) и третья - если маппер не решил, что ему сделать, то он делает именно такие карты (например, чтобы попробовать какую-нибудь свою идею, посмотреть как она выглядит в игре). Основное отличие aim_ от dm_ (или fy_) состоит в том, что aim_ - это простая прямоугольная комната-кробушка с ящиками или другими укрытиями, ну разве еще сделан балкон по периметру, чтоб особо хитрые игроки могли постараться забежать в тыл противнику. А dm_ - предполагает хоть какую-то витиеватость карты, хотя бы несколько комнат вместо одной.
эти "аимы" потом некоторые начали разделять по типам оружия (а остальные так и продолжают называть все такие карты aim_). Вот например:
he_ (Grenade War) - тут игроки радостно перекидываются гранатами, которые в изобилии валяются на полу.
ka_ (Knife Arena) - здесь маппер запрещает игрокам закуп, выдаёт всем по ножику и заставляет игроков резать друг друга. Тоже интересно.
awp_ (Sniper War) - если кто еще не догадался, то расскажу: на таких картах дуэлянты стреляются исключительно на снайперских винтовках.
Отдельно стоит упомянуть странный уход в сторону от стрельбы. Есть типы карт, на которых застрелить или по другому завалить противника даже не предполагается. Там и противник то не предполагается. Вот смотрите:
surf_ (Surf Style) - здесь игрок в одиночестве наслаждается собственным специфическим умением скользить по наклонным плоскостям. Для этого нужен опыт, сразу ничего не получится. Карты состоят из наклонных плоскостей "чуть более чем полностью" :). Смысл игры - доскользить из точки "А" до точки "Б" и нигде не упасть в яму, кто первее доскользит - тот чемпион, можно гордиться :). Поэтому возникает мапперская головная боль - это собрать из энтить секундомер (правда он уже собран, надо его только вставить в карту).
kz_ (Kreedz Jumping) - а тут одинокий игрок прокачивает своё умение прыгать, прыгать и прыгать.Суть - быстрее всех допрыгать до финиша, карты строятся так, что если в одном месте ошибся и не допрыгнул, то начинаешь сначала. Эти карты вообще бесят и тренируют выдержку. Секундомер тут тоже нужен.
Но фантазию мапперов не остановить. Каждый день какой-нибудь маппер придумывает свой собственный сценарий, который кроме самого автора никому не интересен и этот сценарий является какой-нибудь адской смесью уже известных. Вот например:
csde_ (Defuse/Hostage Rescue) - догадываетесь про что такая карта? Да-да, тут надо или взорвать бомбу, или спасти заложников на выбор, кому что больше нравится. Например теры могут спокойно заняться минированием стратегичексого объекта, пока контра не напрягаясь сопровождает захваченных слесарей в безопасное место - ну бред ведь!
В последнее время набрал обороты сценарий
zm_ (Zombie Maps) - на таких картах от маппера тоже ничего особенного не требуется, надо лишь сделать стены (в смысле геометрию карты сделать надо). А дальше все сделает специальная программа к которой прилагается владелец зомби-сервера: добавится везде жуткая темнота, все игроки родятся людьми, а через некоторое время часть из них станет зомбарями (отрастут страшные когти, добавится 1000 hp жизни, возрастет скорость бега и кажется включится специальное ночное зрение) и эти зомбари должны успеть, пока тикает таймер, догнать и задрать всех людей. А люди соответственно должны прятаться, убегать, орать от страха и отстреливаться. Говорят, что были случаи недержания кала - это печально. Таймер маппер здесь не вставляет, это делается без него.
=======================
В общем, как можно видеть, простор для фантазии большой, жестких рамок нет, можно экспериментировать. Но не ждите, что Ваши эксперименты сразу по достоинству оценят игроки. Игроки довольно консервативны и даже простое появление новой карты со стандартным сценарием воспринимают болезненно (матерятся в игровом чате).
=======================
А сейчас пойдет речь о том "особом", что должен делать маппер для реализации задуманного сценария.
Сначала мы познакомимся с тем, какие элементы нужны для качественной работы сценариев, а потом узнаем, как реализуются эти элементы.
Реализация сценария
=======================
1. de_
На карте желательно (то-есть надо):
- разместить точки рождения игроков
- организовать закуп
- указать область установки бомбы
- указать радиус поражения от взрыва бомбы
=======================
2. cs_
На карте желательно (то-есть надо):
- разместить точки рождения игроков
- организовать закуп
- разместить заложников
- указать область спасения заложников
=======================
3. as_
На карте желательно (то-есть надо):
- разместить точки рождения игроков
- организовать закуп
- указать точку рождения VIP
- указать область спасения VIPа
=======================
4. es_
На карте желательно (то-есть надо):
- разместить точки рождения игроков
- организовать закуп контре
= или организовать закуп террористам (область закупа разместить на расстоянии, чтоб им было куда стремиться)
= или запретить террористам закуп и разместить на карте оружие для террористов (чтоб им было куда стремиться)
- отобрать оружие у террористов в начале раунда (они же совершают побег)
- указать область спасения теров
=======================
5. dm_, fy_, aim_, ka_ (и в этом духе)
На карте желательно (то-есть надо):
- разместить точки рождения игроков
- при желании маппера отобрать оружие в начале раунда
- при желании маппера организовать закуп
- или запрет покупки + выдачу оружия
короче на таких картах сам черт ногу сломит с этим оружием, "кто как хочет так и ... делает".
=======================
6. kz_, surf_
На карте желательно (то-есть надо):
- разместить точки рождения игроков
- установить таймер
Элементы
=======================
1. игроки
Игроки - это террористы и контртеррористы. За точки их рождения (появления) отвечают такие точечные энтити:
- info_player_deathmatch - это террорист
- info_player_start - а это его враг, контртеррорист.
От того, сколько таких точечных энтитей будет на карте и зависит, сколько человек смогут одновременно на ней поиграть. Максимально мапперы ставят 16 теров и 16 контров (всего 32). Но бывает в интернете встречаются серверы где месятся "миллион на миллион" игроков одновременно. Это опять всякие проги такое делают, от маппера это не зависит.
Мы с вами уже умеем размещать эти энтити, но надо еще раз повторить тонкие места:
расстояние между энтитями должно быть таким, чтобы игроки не появлялись друг внутри друга, кроме того если энтитю разместить близко к стене или полу, то родившийся игрок окажется вмурованным и не сможет перемещаться.
Автор этих строк размещает игроков на расстоянии 32 юнита друг от друга и 12 юнитов от стен и пола (в смысле границы квадратиков на таких расстояниях находятся, а не центры энтитей). Если Вам кажется, что это черезчур, то можете сделать по своему. Но вообще добрый совет: обязательно проверьте в игре расстановку игроков, напустите ботов побольше и посмотрите, дохнут ли они при рождении и могут ли бегать нормально.
Еще один момент: направление взгляда игрока при рождении. За этим тоже должен следить маппер. Мало кому нравится появляться на карте глядя в стенку и потом разворачиваться. Направление взгляда указывается в настройках энтити. Вы выделяете энтитю "террорист (info_player_deathmatch)", переходите в вид "сверху (x/y)" и жмете "alt+enter", выскакивает окошко с настройками. В этом окошке справа увидите черный кружочек с белой палочкой выходящей из центра. Вот куда смотрит эта палочка, туда и будет направлен нос родившегося террориста. Эту палочку можно хватать мышкой и крутить. И не просто можно, а даже нужно, чтобы выставить правильное направление взгляда. А в вид "сверху" мы переключились, потому что этот вид как раз и соответствует этому черному кружочку с палочкой. Вот например на рисунке сейчас накручено 318 градусов:

По умолчанию энтитя смотрит вдоль оси Х (угол равен нулю). Кстати если вам не нравится мышкой крутить террористов "за нос", то можете указать угол в окошке слева (где написано "Angle", что значит "угол").
Для контры всё то же самое.
=======================
2. закуп (организовать, запретить)
Если ничего не делать специально, то вокруг каждой точки рождения игрока появится небольшая область, в которой игрок может купить себе "водки с закуской"... А именно: оружие, боеприпасы, гранаты, бронежилет, прибор ночного видения... ну вы поняли :).
Однако маппер может самостоятельно указать область закупа, это хорошо и правильно. Если указать большую область, то игрок может закупаться в движении, экономя драгоценные секунды. Если разместить эту область под потолком или вообще в запертой комнате, то игрок вообще не сможет ничего купить (он же не сможет попасть в область закупа, маппер же ему помешает).
Организовать закуп - это значит создать область закупа и сделать её удобной (расширить).
Запретить закуп - это значит, создать область закупа и расположить её так, чтобы игрок ни при каких обстоятельствах не смог до нее добраться (маленькая, под потолком, или вообще в отдельной комнате, куда нет прохода).
Область закупа создается при помощи брашевой энтити func_buyzone. Создаёте обычный браш, обязательно красите его текстурой "AAATRIGGER" (обязательно со всех сторон одной этой текстурой) и превращаете его в энтитю func_buyzone. Потом заходите в настройки и указываете кому в этой области можно закупаться:

В игре этот браш будет невидим и неосязаем, единственное что будет выдавать его присутствие - это появление на экране закупочной зеленой корзины (в игре! не в редакторе). Теперь любой террорист (если у вас также, как на рисунке) как только попадет внутрь этой энтити или хотя бы коснется её, сразу сможет себе прикупить калаш попрямее (время разрешенного закупа устанавливается не в редакторе, а на игровом сервере, ну вы в курсе). Остается только изменить размеры и правильно расположить эту брашевую энтитю.
Есть еще одна энтитя, которая вроде бы отвечает за закуп - это точечная энтитя info_map_parameters, но работает она странно. В смысле в первом раунде она совсем не работает, а потом раскочегаривается (глюк такой) :). Эту точечную энтитю можно поставить в любом месте карты, местоположение не влияет не ее работу (лишь бы не в космосе она была). создаете точечную энтитю info_map_parameters и указываете ей в настройках, кому можно закупаться, а кому нельзя:

Если сделаете как на рисунке, по закупаться смогут только полицаи. Если вам хочется, то можете использовать эту точечную энтитю для ограничения закупа, но достаточно использовать предыдущую, брашевую func_buyzone.
Еще эта же энтитя (info_map_parameters) отвечает за радиус поражения от взрыва бомбы (странно, при чем тут тогда закуп, ага? :) ).
=======================
3. отбирание оружия
Бывает так, что игроки помимо воли маппера разживаются оружием в течение раунда. В начале следующего, конечно, его надо отобрать.
Отбирает всё оружие точечная энтитя "Player_weaponstrip". Даже ножик отбирается, ироки после такого издевательства могут только разве что зацеловать друг друга до смерти (удары кулаками и пинки ногами в арсенал не входят, поэтому даже стукнуть нельзя).
Работа этой энтити не зависит от её месторасположения. Создаём точечную энтитю, делаем из неё Player_weaponstrip и всё - в начале раунда у всех нет оружия (правда его можно купить, если закуп не запрещен, деньги не отбираются). У этой энтити есть параметр "name". Он нужен для коварных замыслов маппера, например: "заходит игрок такой в комнату, и тут хренак! - у него всё отобрали."
=======================
4. выдача оружия
Корме закупа игроки могут иначе получать оружие и аммуницию. А именно: игрокам в CS1.6 маппер может дарить подарки. Делаются подарки двумя способами:
- или суются в карман,
- или россыпью рыскидываются по полу (в надежде, что игрок подберет самомтоятельно).
За "сувание в карман" отвечает точечная энтитя "Game_player_equip". Поставить ее можно в любом месте карты, от местоположения её работа не зависит. Итак, ставим в любом месте карты одну такую энтитю, в настройках выбираем, что именно будем дарить (прямо не поштучно, а списком: напротив желаемого "ствола" вместо "No" указываете "Yes"), а в поле "name" (ВНИМАНИЕ!) вписываем магическое специальное имя (что в нем специального, мы потом узнаем): game_playerspawn - тогда каждому в начале раунда предоставляется "мешочек с подарками". Лишние стволы можно выкинуть :).
У нас тяжелый случай. Если бы мы оставили поле "name" пустым, то в начале раунда сработала бы сначала подарочная энтитя, а потом та, которая всё отбирает. Обидно:).
А вообще то, параметр "name" нужен для более сложных извращений: если этой энтите дать имя (написать в поле этого параметра разных буковок и цифорок без пробелов и на английском языке), то энтитю можно будет "включать" и "активировать". Операцию "Активировать" упрощенно можно представить себе как подойти, пнуть и сказать "дай подарок!", а слово "вкл/выкл" означает, работает ли вообще эта энтитя или нет. Есть такие хитрые энтити которые могут включать и выключать другие энтити. Вот если наша подарочная кормушка (Game_player_equip) выключится (если её выключит та злая, хитрая и пока что секретная для нас энтитя), то хоть запинайся (заактивируйся) - никаких подарков от нее не будет. Вообще это надо мапперу для реализации разных условий на карте, например: "пока кто-то сидит на крыше, никому никаких подарков не будет (подарки можно дарить не только в начале раунда, а например по выключению света в комнате - потушил игрок свет, держи гранату)". Более детально об энтитевых схемах мы поговорим потом.
Второй способ реализуется точечной энтитёй "Armoury_entity". Одна такая энтитя размещает на карте один вид оружия/амуниции. Вот тут важно где вы её разместите. Где расположите эту энтитю, там ствол и появится (и упадет на пол, в воздухе висеть оно не будет). Итак: размещаем такую энтитю на карте, жмем alt+enter (чтоб выскочила панелька с параметрами), указываем тип оружия (в параметре Item), указываем количество единиц этого оружия (в параметре Count). Если мы укажем 10 калашей, то 10 игроков смогут подобрать с этого места по калашу. В эту же точку можно еще одну такую же энтитю поместить и указать там 10 броников. Смысл такой :).
=======================
5. область установки бомбы
Такая область указывается при помощи брашевой энтити под названием "Func_bomb_target". Действуем так: создаём браш, красим его со всех сторон текстурой AAATRIGGER, превращаем этот браш в брашевую энтитю Func_bomb_target. Если такая энтитя присутствует на карте, то одному из террористов бог войны сунет в карман бомбу (а может это и не бог войны, но бомба в кармане появится). Эта энтитя невидима и неосязаема в игре, только у бомбера начинает мигать бомба как только он касается или попадает внутрь этой брашевой энтити. Мапперу остается только по-нормальному разместить эту энтитю и сделать ей разумный размер, чтоб бомбер смог хотя бы в принципе коснуться этой энтити :). Каноничным считается, когда таких брашевых энтити на карте две штуки: бомбпрейс "А" и бомбплейс "В".
=======================
6. радиус поражения от взрыва бомбы
За радиус поражения от взрыва бомбы отвечает наша старая знакомая точечная энтитя info_map_parameters (которая может находиться в любом месте карты, и которая еще запрещает закуп). Вставляем эту энтитю на карту (если еще не вставили) и указываем в соответствующем параметре (Bomb radius) радиус в юнитах (по умолчанию там написано 500). На карте должна быть одна такая энтитя, больше одной - это перебор.
=======================
7. заложники
Заложники - это точечные энтити под названием hostage_entity. Таких энтить создаете столько, сколько хотите заложников на своей карте; размещаете их на карте там где хотите, чтобы они появились; и крутите их за нос, так же как поступали с игроками, чтобы они смотрели в игре в глаза игрокам, а не были нагло повернуты спиной к спасителям (или захватчикам :) ). На заложников также действует уже известное нам правило о расположении точек рождения на расстоянии от стенок, пола и друг от друга.
У этой энтити есть еще два параметра, которых не было у игроков:
- Model — это модель заложника (рожи разные)
- Skin — выбор скина заложника (разные комбинезоны)
С этими параметрами всё просто: нажмете на кнопочку рядом с соответствующим параметром, выскочит списочек, и выбирайте что нравится (можно не париться и ничего не выбирать).
=======================
8. область спасения заложников
Область спасения заложников указывается маппером с помощью брашевой энтити "Func_hostage_rescue". Ничего нового: создаём браш, красим со всех сторон текстурой AAATRIGGER, превращаем в энтитю Func_hostage_rescue, размещаем ее так, чтобы заложники могли её в принципе коснуться. Для игроков эта брашевая энтитя также невидима и неосязаема, а заложники коснувшись ее сразу же исчезают (типа спаслись).
=======================
9. VIP
Место появления VIP'а - это точечная энтитя под названием "Info_vip_start". Все правила по размещению его на карте такие же как и для игроков: подальше от стен и точек рождения других игроков; покрутить за нос, чтоб смотрел при рождении куда надо. Такая энтитя должна быть одна на всей карте.
=======================
10. область спасения VIPа
Где спастись от смерти VIP'у решает маппер при помощи брашевой энтити "func_vip_safetyzone". Всё то же: создаём браш, красим его со всех сторон текстурой AAATRIGGER, превращаем в энтитю func_vip_safetyzone, меняем размеры и размещаем разумно (чтоб VIP мог коснуться этой энтити и исчезнуть "навеки", приведя команду полицаев к победе). Остальные игроки эту зону не видят и не чувствуют. Никаких параметров у этой энтити нет, дополнительно ничего указывать не надо.
=======================
11. область спасения террористов
Если теры совершают побег, то надо для них организовать область спасения. За это в ответе брашевая энтитя Func_escapezone. Для чистоты совести перечислим нужные действия, для создания такой зоны: создаём браш, красим его со всех сторон текстурой AAATRIGGER, превращаем в энтитю Func_escapezone, изменяем ей размеры и разумно размещаем на карте. Теперь если в игре террорист коснется этой энтити, то он исчезает с карты (эффект такой же, как будто его завалили наглухо - он может только ждать конца раунда и спектатором смотреть как мучаются его товарищи; но на таких картах считается, что этот "дохлый" террорист - молодец).
=======================
12. таймер
Это непостижимый клубок взаимосвязанных энтитей, который (клубок) еще называется энтитевой схемой. Можете попробовать собрать такое самостоятельно. Здесь и сейчас об этом мы говорить не будем, а чуть дальше, когда зайдет речь обо всяких этих энтитях мы с вами подробно разберем как оно устроено и дадим ссылку на скачивание уже готового таймера, который надо только вставить на карту.
=======================
Теперь Вы вооружены необходимыми знаниями об энтитях и можете делать карты. Поздравляем от всей души. Дальше читать не обязательно, будет всякая тягомотина, как делать карты грамотно. А говнокарты можно делать и так.
Крайний раз редактировалось 13 марта 2010 года. Такие дела.
====================